//
//  SHEmoticonTools.swift
//  SHWeibo
//
//  Created by jingming wang on 16/8/9.
//  Copyright © 2016年 cpy.name. All rights reserved.
//

import UIKit

// 最大行数
let SHEmoticonMaxRow = 3
// 最大列数
let SHEmoticonMaxCol = 7
// 最多表情数
let SHEmoticonMaxCount = SHEmoticonMaxRow * SHEmoticonMaxCol - 1

class SHEmoticonTools: NSObject {
    // 全局访问点
    static let sharedTools: SHEmoticonTools = SHEmoticonTools()
    
    // 默认表情
    lazy var defaultEmoticons: [SHEmoticon] = SHEmoticon.getEmoticons("default/")
    // emoji表情
    lazy var emojiEmoticons: [SHEmoticon] = SHEmoticon.getEmoticons("emoji/")
    // 浪小花表情
    lazy var lxhEmoticons: [SHEmoticon] = SHEmoticon.getEmoticons("lxh/")
    
    // emoticon三维数组
    lazy var allEmoticons: [[[SHEmoticon]]] = {
        return [
            self.getEmoticonsGroup(self.defaultEmoticons),
            self.getEmoticonsGroup(self.emojiEmoticons),
            self.getEmoticonsGroup(self.lxhEmoticons)
            
        ]
    }()
    
    /*
    二维数组分析
    默认表情 108
    emoji  80
    浪小花  40
    
    通过一维数组 得到二位数组
    默认表情(6页)
    [[20],[20],[20],[20],[20],[8]]
    [0,19] [20,39] [40,59] .....
    emoji(4页)
    [[20],[20],[20],[20]]
    浪小花（2页）
    [[20],[20]]
    */
    
    // MARK: - 一维数组转二维数组
    private func getEmoticonsGroup(emoticons:[SHEmoticon]) -> [[SHEmoticon]] {
        // 页数
        let pageCount = (emoticons.count + SHEmoticonMaxCount - 1)/SHEmoticonMaxCount
        // 实例化一个临时可变二维数组
        var tempArray: [[SHEmoticon]] = [[SHEmoticon]]()
        // 遍历页数
        for i in 0..<pageCount {
            // 位置
            let location = SHEmoticonMaxCount * i
            // 长度
            var length = SHEmoticonMaxCount
            // 处理越界问题
            if location + length > emoticons.count {
                length = emoticons.count - location
            }
            // 范围
            let range = NSRange(location: location, length: length)
            // 截取后的一维数组
            let array = (emoticons as NSArray).subarrayWithRange(range) as! [SHEmoticon]
            // 保存数组
            tempArray.append(array)
        }
        return tempArray
    }
    
    // 传入图片名称得到对应的模型
    func getEmoticons(chs: String?) -> SHEmoticon? {
        
        // 遍历默认表情数组
        for emoticon in defaultEmoticons {
            // 判断是否相同
            if emoticon.chs == chs{
                return emoticon
            }
        }
        // 遍历浪小花表情数组
        for emoticon in lxhEmoticons {
            if emoticon.chs == chs {
                return emoticon
            }
        }
        
        return nil
        
    }
    
}
